﻿using Microsoft.AspNetCore.Mvc.Filters;
namespace SP.User.WebApi.Filter
{
    /// <summary>
    /// AOP面向切面的思想：采用异常过滤器 来哦同意处理 控制器方法执行时发生的 异常
    /// </summary>
    public class SPWebExceptionFilter :  IExceptionFilter
    {
        private readonly ILogger<SPWebExceptionFilter> _logger;//日志记录器
        //构造函数注入依赖
        public SPWebExceptionFilter(ILogger<SPWebExceptionFilter> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// 在此方法中，可归纳到异常信息
        /// </summary>
        /// <param name="context"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void OnException(ExceptionContext context)
        {
            //在方法中，处理异常，写入NLOG日志
            Exception ex = context.Exception;
            var message = "错误信息"+ex.Message;   
            _logger.LogError(message);//写入日志
            context.ExceptionHandled = true;//把异常标记为已处理
        }
    }
}
